﻿#ifndef CHOOSEFRIENDDIALOG_H
#define CHOOSEFRIENDDIALOG_H

#include <QCheckBox>
#include <QDialog>
#include <QHBoxLayout>
#include "Style.h"
#include "Model/DataCenter.h"
using namespace model;

////////////////////////////////////////////
/// 点击三个点后, 继续点击添加按钮弹出的画面
////////////////////////////////////////////
class ChooseFriendDialog : public QDialog
{
    Q_OBJECT
public:
    ChooseFriendDialog(UserInfo* friend_user_info, QWidget* parent = nullptr);
private:
    void init_left();
    void init_right();
    void add_data_fake();
    void add_data_network();
    void handle_click_ok_btn();
    QList<QString> generate_member_list();
protected:
    DataCenter* data_center;
private:
    QHBoxLayout*  out_h_layout; // 这个布局来控制左右两个界面
    QWidget*      left_widget;  // 当前用户拥有的好友
    QWidget*      right_widget; // 当前用户选中的好友
    QPushButton*  save;  // 确定创建群聊
    QPushButton*  cancel;  // 取消创建群聊
    UserInfo*     friend_user_info;  // 好友的信息
    const QString SCROLL_STYLE = get_scroll_area_style();
};
////////////////////////////////////////////
/// ChooseFriendDialog使用的一条一条的item
/// 包含是是否选中, 头像, 昵称这几个属性
////////////////////////////////////////////
class ChooseFriendDialogItem : public QWidget
{
    Q_OBJECT
public:
    ChooseFriendDialogItem();
    ChooseFriendDialogItem(QVBoxLayout* left_v_layout, QVBoxLayout* right_v_layout, const QString& id, bool is_checked, const QIcon& avatar, const QString& name);
    static void add_item(
        QVBoxLayout* const left_v_layout, QVBoxLayout* const right_v_layout, bool is_left,
        const QString& id, bool is_checked, const QIcon& avatar, const QString& name);
    static void del_item(QVBoxLayout* const left_v_layout, QVBoxLayout* const right_v_layout, const QString& id);
    QString get_id();
protected:
    /* 处理鼠标事件 */
    void mousePressEvent(QMouseEvent* event) override;
    void enterEvent(QEnterEvent* event) override;
    void leaveEvent(QEvent* event) override;
    /* QWidget的绘图事件, 当自定义控件设置样式后需要有该函数 */
    void paintEvent(QPaintEvent* event) override;
private:
    QString    id;
    bool       is_checked;
    QIcon      avatar;
    QString    name;
    QCheckBox* ck_box;
};

#endif // CHOOSEFRIENDDIALOG_H
